Basic Constant Contact plugin for Craft CMS 3.x
Switch branches/tags
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Type Name Latest commit message Commit time
Failed to load latest commit information.

Constant Contact plugin for Craft CMS 3.x

Basic integration with Constant Contact API to allow you to add new contacts to your Constant Contact lists.


This plugin requires Craft CMS 3.0.0-RC1 or later.


To install the plugin, follow these instructions.

  1. Open your terminal and go to your Craft project:

     cd /path/to/project
  2. Then tell Composer to load the plugin:

     composer require madebyraygun/constant-contact
  3. In the Control Panel, go to Settings → Plugins and click the “Install” button for Constant Contact.

Configuring Constant Contact

Signup for Constant Contact API access at Mashery. From there you can generate your API key and get an authentication token. You can also get your list ID by visiting the API tester and intiate a GET request against the /lists endpoint.

Configure the plugin by creating a new config file named constant-contact.php in your config folder, and add the following the config parameters:

Example config file

return [
    'key' => 'xxxxxx',
    'list' => 'xxxxxx',
    'token' => 'xxxxxx',

Using Constant Contact

Create a new form in a front-end template, like so:

<form action="" method="POST">
    {{ csrfInput() }}
    <input type="hidden" name="action" value="constant-contact/subscribe">
    {{ redirectInput('thanks') }}

      <input type="email" name="email" value=""/>   
    <input type="submit" name="" value="Subscribe"/>

You can optionally override the default list by adding a hidden listid input


<input type="hidden" name="listid" value="12345">

Displaying flash messages

When a contact form is submitted, the plugin will set a notice or success flash message on the user session. You can display it in your template like this:

{% if'notice') %}
    <p class="message notice">{{'notice') }}</p>
{% elseif'error') %}
    <p class="message error">{{'error') }}</p>
{% endif %}

Ajax submitting

If the form is submitted with Ajax, the plugin will return a JSON object with the same keys as the template object described above.


$('form').on("submit", function(event) {
    $.ajax({url: '/', type: "POST", data: $(this).serialize(), dataType:"json", success: function (data) {
        if (!data.success) {
          //display error message
        } else {
          //hide form and display success message