Product Support

Email Expansion Kit

Provides several new ways to send emails with Participants Database, including email on approval, resend signup email, and custom email to selected records in the list.

Product Setup

Creating an Email Template

After installing and activating the plugin, the first thing to do to configure this add-on is to define your custom email. In the admin menu, under “PDb Email Templates” select “new template” and you’ll be shown a screen where all the components of your email template are defined.

Each template has a name that is used to identify the template and its purpose. Below that, you have fields for defining the sender name and email, and also the recipient name and email. All of these fields can be filled using a value tag so that, for instance, the email goes to the name and address defined in the record.

An email must have a subject, you can use value tags there as well if you want to personalize the subject line.

The body of the email may contain HTML, styled text, links, images, etc. and use value tags as well.

Below the email body, you can set up email attachments. Simply select the file you want to attach, and it will be sent with the email when it goes out. To add another attachment, click on “add attachment” and choose another file to include.

Value Tags

In the email template and subject settings, you can use value tags to show a value from the record that is associated with the template. These tags take the form of [fieldname] and you can include any defined field in the record that way.

There are also additional value tags that can be used:

  • [record_link] provides a link to the user’s editable record
  • [admin_record_link] provides a link to the record in the admin
  • [single_record_link] provides a link to the record (not editable) display page
  • [date] shows the current date using the site’s date format setting
  • [time] provides the current time using the site’s time format setting
  • [change_log] shows a table with all the before/after changed values
Configuring the email send action

Configuring the Send Trigger

Each email template is configured to be sent under certain conditions. Usually, this is when a specific event occurs, such as a record update, or a record gets approved.

Under the “Send Action” title is a dropdown selector where you can choose the event or action that will trigger sending this template email.

Sending Manually

To send an email to selected records on the list manually (such as a newsletter or announcement) select Admin List “With Selected” Action for your action. The sending occurs on the Participants Database admin list participants page: select the records you want to get the email, then select your email template in the “with selected” action dropdown. Hit “apply” and confirm to send the email to all selected records.

Setting Up Conditional Sending

The Send on Condition Panel

When an email template is triggered, you can check the values in the current record (an email send event is always associated with a record) to see if the template should be used. There are three basic ways the conditional send can be used:

Compare the value of a field in the current record against a fixed value

  • this is best for determining what kind of record it is so you can use different templates for different kinds of records

Compare a value in the current record against the previously saved value

  • this is for triggering an email if a specific value in the record has been changed

Compare the currently selected locale against a list of locales

  • this is so you can define different templates for different languages

Comparing Against a Fixed Value

If you need to send a particular email based on the value of a field in the record, this will allow you to do that. For instance, you could have two different “welcome” emails for your members, one for each of two types of membership. The incoming value is compared to the comparison value and if the operation resolves as “true” the email is sent.

The comparison value can be any value you need to compare. It can also be a comma-separated list of values. If any of those values resolves as “true” the email template will be used.

Send on Field Value Change Only

If the condition is set to trigger when a specific value is selected, this preference will only trigger the email the first time the value is selected.

Comparing Against a Saved Value

This is used when you want to send out an email when a particular value in the record has been changed. For instance, if a member changes their email address, an administrator gets notified.

Comparing Against the Current Locale Setting

If you have a multilingual site, you can set up a different email template for different locales. There are two ways to do this, depending on how the multilingual aspect of your site works.

You will need to have an email template for each language you want to support.

If the site provides a way to let the user select their preferred language, the selected language will be the “current locale” value. You can use that value to select the email template to use. In this mode, the comparison value should be one or more language codes (separeted by a comma if there are more than one) that the template should be used for. It is important that the language code in the comparison value exactly match the code the website is using. A list of the codes WordPress uses can be found here.

It is also possible to use a value in the record to determine the email template. If the user can select a preferred language in their record, you can use that value to determine which template to use. You do this using the “Field Value to Fixed Value” setting, and the comparison value works the same as it would using the current locale value.

User Feedback Messaging

For the “signup submission” and some other actions, the user is presented with a feedback message on the screen, and this can be customized on a per-template basis as well. Just put your message in the “user messaging” field and it will be presented to the user. Each template has it’s own user messaging field, so each type of signup (for instance) can have different messaging.

Email Session Send Limit

This plugin is not intended to be used as a mass-emailer: it has a built-in limit to the number of emails that can be sent in a single session. This means that if you try to send an email to more than 100 (the default limit value) recipients, only the first 100 will be sent. The main reason for this is the plugin does not have the capability for extended operation that would be needed to send to a larger list of recipients. Technically, the script sends all the emails in one operation and most servers will have a limit to how long a single operation can run, typically 30 seconds.

The easiest¬†way around this limitation is to¬†send your emails in batches of 100. If that is not practical, I’d suggest you¬†use either a newsletter plugin or¬†a 3rd party mass-email service.

Another consideration is the plugin does not provide a mechanism for an “opt-out”¬†or unsubscribe which is required by law on mass email in some areas. If you are using shared hosting, in most cases sending mass email¬†is not allowed, and there will be a low limit to the number of emails sent in a hour. While it is possible to override the plugin email session send limit value, this is not a supported use of the plugin.

An Example of Using a Comparison Against a Fixed Value

To illustrate this, let’s suppose you have a registration form for two different kinds of registrations: one for students and one for teachers. To set this up, create a new template, (it will be for the students) and set the “Send Action” to Signup Submission. Enable the “Send On Condition” checkbox and below that, you’ll see new fields.

First is “Participants Database Field” set that to the name of your “type” selector in your signup form, so that the template knows which field to check.

Next, select an Operator: in this case you want¬†“Equals” because you’re testing against an exact match, as you’ll see.

Now, set up the comparison value. To check the submitted value against a specific string, choose “Comparison Value” and then below that, type in the value that the template will look for. If the applicant is a student, the comparison value might be “student.” If the incoming registration submission has a “type” value that equals “student” then use this template and send the email.

Next, you set up another email template for the teachers. It will be checking the same field, but for the value “teacher.”

Sending an Email When a New Blog Post is Published

If you’d like your list to receive an email when you post something new, use the “Blog Post Published” email action in your template.

You can use several tags in the email to include content from your blog post: [post_title], [post_content], [post_excerpt], etc. The [post_content] tag will include the whole article, including any images. (embedded media such as audio or video won’t work, however) To provide a link back to the post, use the [post_permalink] tag to generate the link. The post featured image can be included with [post_thumbnail].

Set up your “Send on Condition” to only send to those who have elected to receive your mailings. For example, if you have a checkbox for people to opt-in to your list use that as your condition for sending the email…such as in the example to the right here.

This is not a “mass-email” feature, you will be limited to 100 emails generated by this action. See above for the reasons why these limits are in place.

The “Blog Post Published” email action can also be used to send notifications to a plain list of emails also, of course.

SMS Messaging

It is possible to configure an email template to send a message to a cell phone. To do this, you need to know the cell service provider’s SMS Gateway email address. You can usually find it easily with an internet search using your service provider name and “SMS Gateway” Once you know the gateway email address for your phone, just use that as the “recipient” and when the email template is triggered, it will be sent to the mobile phone as a text message.

Of course, this will have no support for formatting and very limited support for images and media, but links will work fine.

It is not possible to send an SMS message if you only know the phone number, you must know the service provider for the number as well.

Product Settings

The Email Expander Add-On does not use¬†a settings page, instead, each template has it’s own configuration.

Email Title

Gives the template a name. If you have several templates, it’s a good idea to use something descriptive here so you can find the template next time you need to edit it. You can change this any time, it won’t affect the template’s function.

Email Setup

Sender Name, Sender Email

The email should be from a legitimate sender so the recipient knows it is not spam. Value tags are allowed.

Recipient Name, Recipient Email

These will often contain value tags so that the email is sent to the person registering. This could also be any fixed email address. The name is optional.

It is possible to send the email to multiple recipients. If you want to include a fixed email address as a CC or BCC (such as to an administrator), there are fields for that below. If you need to send to multiple email addresses using value tags from the record, you can enter those here as a comma-separated list of email addresses, for example: [email],[email_2]


The subject line of the email, can use value tags.

Email Body Template

The is the main part of the email, you can put HTML, headings, images, styles, etc., but be aware that many email clients have limited ability to render HTML Keep it simple for best results.


CC, BCC Recipients

Just under the¬†attachments are settings where you can add additional recipients to the email. BCC recipients won’t be visible to other recipients, while CC recipients’ emails will be visible to all recipients. This field does not process value tags, you can add more recipients using values tags in the Recipient Name and Recipient Email fields above.


This section allows you to include files with the email. Simply select a file (either from the media library or upload a file) and the user will receive the file when they get the email. You can include multiple files by adding more attachment lines. Remember that any attached files will have to be downloaded by the recipient, so keep it small to avoid problems on the receiving end.

User Messaging

Some actions use this field to show the user a message after the action has occurred, such as after submitting a signup form. This gives you a way to customize the user feedback message according to the email template that was used to send an email.

The Send Configuration

Each email template may have a “Send Action” that determines when the email will be sent. Some of these are automatic, some are manual: waiting for an action by an administrator to be sent.

Signup Submission: the email will be sent when a signup form is submitted. This action duplicates the default action of Participants Database, and so if this template gets used, it prevents the default email from being sent. This means that if you set up a template here that sends on certain conditions, the regular signup email will be sent unless those conditions are met.

Frontend Record Update, Backend Record Update: this action happens when a record is updated. The frontend update happens when a user edits the record after accessing it with their private link, or when the frontend record edit form is used in any other way.

Frontend Record Pre-Submit Update: this action happens just before the updated record is saved on the frontend. This gives you a chance to check for a changed value because you’ll have both the new and old values to check against.

Multipage Record Update Thanks: this email is triggered when a user completes a multi-page record edit form. It requires that the user end up on a page with the [pdb_signup_thanks] shortcode when the final page is submitted.

Admin List “With Selected” Action: this gives you a way to define a custom email that is sent manually to a selected list of recipients by an admin in the backend. If you set up a template with this action, it will appear in the bulk actions dropdown in the Participants Database admin list page so you can send your custom email to the selected members.

Note that this will only send to a limited number of recipients, 100 or less to avoid script timeouts, so it can’t be used to send out to your list of thousands. Also, be sure you know your web host’s mass email policy to avoid problems with your hosting.

Admin List With Selected: delete, approved, unapproved: this action is triggered when a bulk action is performed on the list. An email will be sent to every selected record when this action is triggered.

Send on Condition

This setting gives you a way to determine if the email should be sent. Enable this to have a condition checked before sending the email.

Participants Database Field

This selects the field that is tested. It must be a field that is included in the submission, either as a user input or as a hidden field.


This gives you several ways to make a comparison to determine if the email should be sent.

Comparison Value Source

When the value in a record is checked, it will be checked against the comparison value. This value can come from one of three places: either as a literal value, against the saved record, or against the current “locale” value.

Comparison Value checks the record value against a set value. This value is found in the “Comparison Value” field below.

Send on Field Value Change Only when checked, will only send an email when the record value is changed to the comparison value. It will not trigger if the comparison value matches, but isn’t getting changed. (this is only available when the comparison source is¬†Field Value to Fixed Value)

Saved Value checks the incoming or new value against the previously saved value. This value is only valid when the trigger is a record update because it requires that the record be in the database beforehand. The purpose of this is to give you a way to check against a changed value, so that the email will only be sent when your selected field value is changed by the user or an admin.

Current Locale Setting: this value is the current language selected. If you have a multilingual site, this gives you a way to send a different email depending on the language chosen. It will be the usual WordPress language abbreviation, usually something like “FR_fr” or “BR_pt”.

Prevent Duplicates

If this is checked, an email that uses the same template going to the same address as an email that was sent in the last 24 hours will be blocked as a duplicate. This is mostly to prevent accidental resending.


Can I use this plugin to send a newsletter to the list?

That depends on the size of your list. If it is 100 or less, no problem. If you need to send to more than that, it’s possible (if a bit laborious) to send your newsletter in groups of 100 or less. Be sure you know your web host’s mass email policy, most shared hosting does not allow you to send lots of emails over a short period of time.

If your list is more than a few hundred, you’ll need to use a proper mass-email plugin or third-party service.

Is it possible to keep a log of all emails sent?

You can do this by installing an email logging plugin. I’ve tested Email Log and it works well.

Is it possible to get a notification when a user changes their record?

Yes, use an email template with the “Frontend Record Update” trigger. In the body of the email, you can use the [change_log] tag to show a table with all the changes the user made.

The emails are not sending: I'm getting a "Message body empty" error

This is most likely caused by another plugin that uses the global content filter. Participants Database be default applies the global content filter to the body of all emails so that other plugins’ functionality can be added to the message, usually by using a shortcode. Sometimes plugins alter the body text without any shortcodes.

The fix for this is usually to change the “Use WordPress Auto Formatting” setting in Participants Database (under the advanced tab) to a setting other than to use the global content filter. Be sure to test your email after changing this setting.

I'm getting sharing links or other unwanted content in my emails. How do I prevent this?

This is the same answer as the above question. You are probably using a plugin that adds sharing links or other dynamic content to your site content. You can prevent this from happening by changing the “Use WordPress Auto Formatting” setting in Participants Database under the advanced tab.

I want the recipient of the email to be determined by a selector in the signup form, how can I do this?

Often, you want to be able to send an email to a recipient based on some value in the data submitted by a signup form. You don’t want to just put the email addresses in the form, so how is this possible?

This can be a little tricky to set up, but it’s not really complicated.

The first thing you need to do is set up your selector so that it can save a value that uniquely identifies the recipient. What that is really depends on your application. It could be a name or an ID number…anything that you can use to find a specific email address to send the email to.

Next, you need to use the “value tag” for the selector in the “to” section of your email template.

Then, you set up a filter that takes this identifying information and gets the email address to use: the value tag in the “to” slot is then replaced with the recipient’s email address. The email template has a filter just for this purpose. I have written up a gist that shows you how to filter the recipient value and get your email address:

I have two different signup forms, and I want each form to send a different email. How to set this up?

In a scenario such as this, you’ve typically got two signup forms on two different pages. For each one you plan to send an email for that particular submission.

To do that, we need two things:

First, set both templates to send on the “Signup Submission Thanks” action. (Also: in the Participants Database settings, under the “Signup Form” tab, deselect the default email for the signup form so you won’t get that triggering also.)

Second, we’ll need a way to differentiate the two submissions. The method I describe in this article “Multiple Databases” in Participants Database will work here: set up a hidden field that will be included in the signup form that records the name of the page the signup form is on. This is done by placing post->post_name in the “default” setting for the hidden field.

Back in your email templates, on each one, set up the “Send on Condition” to match the name of the page that corresponds to the template you want that registration to use:

  1. Enable “Send on Condition”
  2. Select “field value to fixed value”
  3. Select the hidden field
  4. Set the fixed value to the name of the page that will trigger the template: this will be different for each one

There are two other methods worth mentioning for determining which template to use: you can set the value of the hidden field in a custom template, or you could give the user a radio button or other selector, and use that value to determine which template is used.

I want to send an email to a group within my list, how do I do that?

OK, easiest way to do this is to define your email template and set it to go out as a “PDb Admin List With Selected Action” Now, go to the admin list page, and use the filter to show only the people you want to send the email to.

Now, all you have to do is select all (checkbox at the top of the column of checkboxes) and then select your email from the “with selected” dropdown, hit “apply”, confirm, and they will send.

You can define several emails like that if you need to send out different ones to different groups.

How do I send an email from another script?

If you have some custom code and you want to use the Email Expansion Kit to send an email, it is very simple. First, of course, define the template you want to use. At the top of the template edit page, you’ll see a numeric ID for the template. You’ll use that to invoke the template in your code.

In your code, use a function like this:

\cpt_email_templates\sender::send( $template_id, $record = array(), $context = '' );

Where $template_id is the numeric ID of the template you want to use.

$record is an associative array of data to use. This would normally be a Participants Database record, but it can be any associative array of data to be used in the template. This is optional, you don’t have tp include data, it is only needed if you want to display the data in the template.

$context is an optional string to name the context of the send, it is only for the purpose of labeling the send operation. This is useful of you are using other filters on the email send process and you want to know the source of the email. The context value will also be added to the header of the email so you can use that to identify the code source of the email.

How do I wrap the email with a DOCTYPE declaration or use an HTML framework for the email body?

This is possible, there is a filter pdb-template_email_html_body that you can use to wrap the body of the email with your HTML framework, or add the DOCTYPE declaration. This can be helpful in addressing layout issues due to inconsistent application of CSS layouts in email clients.

Check this article for more information on that: Which Code Should I Include in Every Email?

Here is an example plugin that shows how this can be done:

Support Discussions for Email Expansion Kit

  • I am trying to change the font associated with PDb Email Templates. I read the “How do I wrap the email with a DOCTYPE declaration or use an HTML framework for the email body?” but I don’t know where to put the code. There is a section to put “User CSS rules for styling plugin displays” in the PDb settings but I don’t know if that will affect the e-mail template.
    The font being used drops the numerals which is hard to read. I am not really picky as long as the numerals are the same size as the upper case letters. I have used CSS in webpages so I know the basics but I don’t know how to affect the e-mails.

    • The code is a plugin, you need to download it and install it as a plugin: Installing a Gist as a Plugin

      Changing the font for an email will have only limited success because the display of an email is under the control of the email client. User or client settings can easily override any CSS you put in there, especially font declarations.

      Bear in mind that what you’re seeing in your email client is not what others will see because they may be using a different client and different settings.

      • Roland,
        First of all I love your database plug-in. But, I am running into a dilemma, I tried to use the e-mail expansion kit for creating e-mail blasts. I also tried to use the recommended e-mail wrapper. Most of the commands I am trying to use are margin and padding commands. For the graphics these are being ignored and all the graphics are left justified and I haven’t been able to change them to center justified as I would like.. I am viewing the e-mail in my gmail account and comparing them to a mail chip e-mail in the same gmail account. From that I gather the issue is not on the receiving end but the sending end. I am using BlueHost to house the website.
        I next tried using the mail chimp expansion but I made a fatal mistake. I thought I could import the contact and then delete them and re-import when the list changed. However it looks like Mail Chimp keeps a copy of the deleted e-mails and doesn’t allow import a second time without using their form with a verification feedback to the owner of the e-mail address.
        So my question is there a mail plugin I can use that is compatible with importing and deleting lists or is there some way to solve the formatting problem?
        Is it possible I am looking at this incorrectly? We get a lot of fictitious sign-ups so to just deactivate the email makes our list to go well over a thousand where actual membership is about 100 to 150.

        • Hi Thomas,

          It may be that using the wrapper is not the best way to add CSS rules (as a

  • Hi – we’re using the email expansion kit to send out emails to our database of around 300 participants, sending them in batches of 100. Some emails are going out but we’re getting error messages:
    mod_fcgid: read data timeout in 120 seconds, referer:
    mod_fcgid: ap_pass_brigade failed in handle_request_ipc function, referer:
    Could you let me know if these messages imply that not all of the emails were sent successfully, and whether smaller batches would likely address this issue?
    Thanks for your help.

    • It’s not clear from what you posted that some emails possibly did not go out. The messages might be related to the processing of the email send, hard to tell, they don’t even look like error messages, strictly speaking. The best way to get info on what those messages mean is to ask your web host.

      One thing you can do is to have email logging set up, or use the plugin debugging to log each outgoing email so you can verify that each one was sent.

      It may be that smaller batches will help. The 100 email limit is a guess based on what most systems can handle.

  • I’m trying to use your code above to select a recipient to send an email to.
    I have a multi select checkbox with options including ‘Laura::1’ (1 is the user id).
    The user id is appearing in the to: field according to the email log but in a weird format:
    The email address isn’t being substituted, presumably because of the rest of that text (which is also in the debugging log).
    Is this an issue with the way I have put the user id in the checkbox option? I also tried the username with the same result.


    • You can’t use the user ID or username in the email “to” setting, it has to be an email address or a field that contains an email address.

      • So the value to be saved in the selector field has to be an email address? In that case I misread your code, I thought the email was pulled from the record/user.


        • The email is pulled from the record, but not the user. It has to be a field with an email address as the value. It cannot get the email address from the user ID or username without custom code. If you don’t want to use custom code and want to use a selector to select a recipient, the value of the selected item must be an email address.

        • Ah, I was hoping to be able to select more than one value, but if it has be one then I’ll do it that way.


        • Well, I appreciate your question, I will be looking into how to handle the use of a multiselect for the “to” field. If you want there to be multiple recipients, the way to do that is to use a text field and type in the email addresses separated by a comma.

      • I’ve changed the field options to an email address but I still get those extra characters coming with it to the to field.

        With the email in the selector field do I even need the recipient selector filter above? I get the same result with and without?

        • OK, so you’re using a multiselect field for the email and the problem with that is a field like that is represented as an array (this is what you’re seeing) because the field can store multiple values. If you use a regular selector, it will work.

  • We are using PDb_Template_Email::send($config, $data) function to send our emails and recently got failures recorded in our email log saying: could not instantiate mail function.
    Is there a return value that we could check for and inform the user of the error?

    • The PDb_Template_Email::send method will return a true if successful or false if the send was unsuccessful. This value ultimately comes from the WP function wp_mail.

      • We are now getting an error report of a consistent failure to send. The email log again is reporting: Could not instantiate mail function.

        • This is not under the control of the plugin, it simply hands the email off to WordPress. If you have an email transport (such as SMTP) plugin, that would be a good place to look for configuration issues and test your email transport.

        • We do not have a SMTP plugin and we have other plugins that are sending emails without errors. We have the Email Users plugin and Wordfence that are both sending emails with no errors reported in the Email Log.

        • Ok, but still, the plugin doesn’t handle actually sending the emails, so I don’t see how I can help you. Can you describe how you’re sending the email, and what you see…where do you see this error message? What is the exact working of the message?

        • We are using PDb_Template_Email::send($config, $data) function to send our emails and recently got failures recorded in our email log saying sent status of: could not instantiate mail function.
          We could do a teamviewer shared screen session to further debug. Our retired fellowship group for retired men are reluctant to share their email addresses. So I am limited in showing our log here.
          Our own log is returning a send failure from PDb_Template_Email::send($config, $data).
          $config is:
          [to] =>
          [from] => Bocce Activity Corordinator
          [reply-to] =>
          [subject] => Bocce
          [template] => TEST. Please hit reply and send back to me. Thanks, xxx

          $data is:
          [first_name] => xxxxx
          [last_name] => xxxxx

        • OK, so where do you see the error message and what is the exact wording of the error message?

          This may help identify whether the problem is in something the plugin is doing or if there is some technical problem with the email functionality.

          Since this is a system-specific issue, and you’re using custom code to send the email, there is no way for me to investigate properly.

          Can you successfully send email using the plugin’s built-in email function, such as sending an email from the admin list participants page using the “with selected” function or normal notifications for new signups or edited records? This will show if the problem is in your code.

        • I got an email error on the List Participants page with selected dropdown “send signup email” to me as the participant. I can attach a screenshot but not sure how to do that here.
          There were two message bars: the first said “0 emails were sent.” The second said: “could not instantiate mail function.”

        • The “could not instantiate mail function” error message usually indicates the data provided to the email function is incomplete or contains invalid data. For example, the send data example you showed did not include an email address in the “from” header. I’d suggest you make sure there is an email address in there. The plugin will use the “Signup Email From Address” if no “from” header is supplied to the method.

        • That was my error in copying the log portion into the reply it’s like the following:
          Bocce Activity Corordinator

        • OK your comment processing is removing the angle brackets and the text in between.

          Bocce Activity Corordinator 

          My spelling error for Corordinator as well.
          However, my send a signup message test would not have the From problem and would be presumably not incomplete or have invalid data.
          I can send you the screenshot of the error shown if you don’t believe me.

        • James, it’s not that I don’t believe you, it’s just that what I’m trying to do is determine what is causing the problem so I can help you fix it. So far, we haven’t seen what the problem is.

          The next step is for you to turn plugin debugging on, clear the debugging log, then test sending the signup email. Go back to the log and the data that was sent to the email function will be there in the log, thqt will maybe tell you what is missing or misconfigured.

        • We switched our code to use the wp_mail function directly and got no errors.

  • Hi Roland,
    In PDB Email Templates I use CC and BCC in some templates. The email is sent correctly, but the CC and BCC don’t seem to work. Any idea what could be the problem? I have no idea how long this problem already exists, have been away for a while.

    • I just tested this and it’s working, so one thing you can do to check this is to turn plugin Debugging on, clear the Debugging Log, then test your email. The details of the email send will be in the log, including all the headers. You should see what was in the CC and BCC headers.

  • Hello Roland,

    I am successfully using the “PDb HTML Email Wrapper” to add an organisation Logo to all emails sent from the database.

    I would also like to be able to add an opening paragraph to all emails , however I want to be able to include specific database fields. Is it possible to be able to add this to the wrapper before the {body} tag – and if so, how do I go about it?

    • If you want to add a paragraph to the top of your email, you can do that in the template, no special code needed. It’s way more complicated to try to do this in the wrapper plugin.

      • We use a lot of email templates to communicate with our members and they all start with the same paragraph. I was just trying to find a way to automatically have that paragraph inserted into every email rather than having to type it into each of the numerous templates we make. The opening paragraph does however utilise data from fields

        • If you’ve got some coding skills, you can create a custom plugin that automatically adds your paragraph to the template. The filter to use is pdb-template_email_html_body and you can find the details for its use in the plugin file classes/PDb_Template_Email.php in the send_email() method.

  • Hello and thank you again for your work and your extensions that I use for our judo site.
    I would like to know how I can help you translate PDB extensions into French please?
    This is so that other members who manage the participants can use the email expansion kit more easily.
    Thank you in advance for your return

    • I would be very grateful to have French translations!

      The process is pretty simple, you need to have a translation editor (Poedit is the one I use) so you can generate the language files. Each plugin has a translation template that you use as a starting point. The app will help you set it up.

      This article has the details: Changing the Labels or Names in Participants Database

      It refers to the Participants Database plugin paths, you just need to use the path to the specific plugin to generate a translation file for that plugin.

      • Hello and thank you for your prompt feedback.

        I took the liberty of completing the French translation on WordPress Locales. If I understood correctly, we have to wait for validation of my translations. But I hope it can help you.

        I will now tackle the information you gave me about the email expansion kit using poedit.

        As soon as this is finished, I would like to know how to send you the .po file including the French translation please.

        I remain at your disposal if necessary


  • Hello Roland,

    I have email templates set up to automatically email participants when their membership fees are due for renewal. The templates worked fine in July when a large number of memberships expired. However, I now have a single membership, that became due for renewal on October 6, where neither the “Renewable Payable” (scheduled for 14 days prior) nor the “Renewal Due” emails appear to have been sent (I have the emails CC to my account). Any clues as to where to go from here would be greatly appreciated.


    • There may be something specific about that record that didn’t trigger the email at the right time, I don’t know. If for some reason the send was attempted but the send failed, the plugin won’t try it again.

      Something that can be helpful for this kind of thing is an email logging plugin. It gives you a way to know what went out and when. Sometimes the problem is a matter of reception, not sending, and the log will confirm this.

      • OK. I have set up email logging and waited for another membership to change status (this one from “Paid” to “Payable”) and no email was sent (nothing in the email log). It appears as if the status change is not triggering the email send. Note that I can manually send the emails (using the “PDb Admin List With Selected Action” send action).

        • If you see the status change in the log, and the email is not triggered, then you should check on the configuration of the email template you have on the “Member Payments: Status Change to: Payable” trigger to make sure it’s configured to send.

  • Thank you for this.

    Do you know a developer or can I hire you to do this for me? Please advise thanks!

    • Sorry, I don’t have a recommendation, I’m looking for one myself. I don’t offer any coding services, no time for it.

  • Hello I have a few questions.

    Is it possible

    1. To automate an email to a user if they have not finished all of their fields within their profile?

    2. When a new user is approved the other user gets an email if they are following the person?

    3. Send email to active users automatically if they are a active user?

    • While these things are possible, the plugin does not have this exact functionality built in. Instead the plugin is set up to allow for custom code to use it to send templated emails. If you have some coding skills, it’s not too difficult. Take a look at this tutorial article that demonstrates how to use a cron to trigger an email send when certain conditions are met. In your case, you would take this as a starting point to develop your own set of conditions for sending the email:

      Automatically Sending an Email using the WordPress Cron

      The “new user approved” condition needs to be triggered before the new user’s approval is actually stored using the pdb-before_submit_update hook which lets you check the previously saved record so you can tell if the approval value is getting changed from no to yes.

      At any rate, this is code that you will need to write yourself.

Leave a Reply to Roland Barker Cancel reply

Your email address will not be published. Required fields are marked *

Would you like to be notified of followup comments via e-mail? You can also subscribe without commenting.